<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>算术表达式</title>
    </head>
    <body>
        <script>
            // 算术运算符
            // 加           +
            // 减           -
            // 乘           *
            // 除           /
            // 取余         %


            // 加减的符号和数学一致，乘法是*号，除法是/号
            // 默认情况，乘除法的优先级要高于加法和减法；必要时可以使用圆括号来改变运算的顺序
            // 1 + 2 * 3；                  // 7
            // (1 + 2) * 3;                 // 9
            // 1 + 2 / 4;                    // 1.5
            // ((1 + 2) * 3 + 4) / 2;       // 6.5

            // 加号的两种作用
            // 加号有“加法”和“连字符”两种作用
            // 如果加号两边的操作数都是数字，则为“加法”，否则为连字符
            // 1 + 2                        // 3
            // 1 + '2';                     // '12'
            // '1' + '2';                   // '12'



            // 取余运算
            // 取余运算也叫作“求模运算”，用百分号“%”表示
            // a % b表示求a除以b的余数，他不关心整数部分，只关心余数
            // 11 % 4;                      // 3, 因为11除以4余数是3
            // 20 % 6；                     // 2, 因为20除以6余数是2
            // 12 % 3；                     // 0, 因为能够整除，余数是0
            // 9 % 3；                      // 0, 因为能够整除，余数是0
            // 3 % 9;                       // 3, 因为商0，余数是3

            // 隐式类型转换
            // 如果参与数学运算的某操作数不是数字型，那么JavaScript会自动将此操作数转换为数字型
            // 3 * '4'                      // 12
            // 隐式转换的本质是内部调用Number()函数
            // true + true                  // 2
            // false + 2                    // 2
            // 3 * '2天'                    // NaN



            // 在JavaScript中，有些小数的数学运算不是很精准
            //      0.1 + 0.2               // 0.30000000000000004
            // 解决方法：在进行小数运算时，要调用数字的toFixed()方法保留指定的小数位数
            //      Number((0.1 + 0.2).toFixed(2))      // 0.3


            // 幂和开根号
            // JavaScript中没有提供幂计算、开根号的运算符。需要使用Math对象的相关方法进行计算
            // Math.pow(2,3)                // 8   意思是2的三次方
            // Math.pow(3,2)                // 9   意思是3的二次方

            // Math.pow(81)                 // 0   意思是根号下81
            // Math.pow(-81)                // NaN 负数无法开根


            // Math.ceil()向上取整； Math.floor()向下取整
            // Math.ceil(2.4)               // 3   意思是取比2.4大的最近的一个整数
            // Math.floor(2.4)              // 2   意思是取比2.4小的最近的一个整数
            // Math.ceil(-2.4)              // -2 
            // Math.floor(-2.4)             // -3
            // Math.ceil(2)                 // 2
            // Math.floor(2)                // 2
        </script>
    </body>
</html>